import { defineConfig } from 'vite'
import { visualizer } from 'rollup-plugin-visualizer'
import vue from '@vitejs/plugin-vue'
import vueJsx from '@vitejs/plugin-vue-jsx'
import { viteMockServe } from 'vite-plugin-mock'
import { resolve } from 'path'

// https://vitejs.dev/config/
export default defineConfig(({ command, mode }) => {
  return {
    base: '/',
    resolve: {
      alias: {
        /** @ 符号指向 src 目录 */
        '@': resolve(__dirname, './src'),
        // vue: 'vue/dist/vue.esm-bundler.js',
      },
    },
    server: {
      /** 是否开启 https */
      https: false,
      /** host 设置为 true 才可以使用 network 的形式，以 ip 访问项目 */
      host: true, // host: "0.0.0.0"
      /** 端口号 */
      port: 7071,
    },
    css: {
      preprocessorOptions:{
        scss: {
          additionalData: `@import "./src/styles/bem.scss";`,
        },
      }
    },
    build: {
      target: 'es2015',
      /** vite 2.6.x 以上需要配置 minify: terser，terserOptions 才能生效 */
      minify: 'terser',
      /** 在 build 代码时移除 console.log、debugger 和 注释 */
      terserOptions: {
        compress: {
          drop_console: false,
          drop_debugger: true,
          // pure_funcs: ['console.log'],
        },
        output: {
          /** 删除注释 */
          comments: false,
        },
      },
    },
    plugins: [
      vue(),
      vueJsx(),
      viteMockServe({
        mockPath: './src/mock/',
        supportTs: true,
        logger: true,
        localEnabled: true,
        prodEnabled: true
      }),
      visualizer()
    ],
  }
})
